1. Field of the Invention
The present invention relates to a load sharing system which performs distributed data processing with a plurality of processors, and more specifically, to a load sharing system which is structed on networks.
2. Description of the Related Art
When a server system is required to provide various services to many users, one of the possible solutions is to distribute server tasks to a plurality of computers to share their workloads. Such a distributed system is referred to as a "load sharing system." The load sharing system may be constructed with a plurality of servers interconnected via a local area network (LAN). The servers provide the users with data processing services by executing specific application programs (hereafter "applications"). The term "service" means a unit of such work requested by users and processed by the servers.
In conventional load sharing systems, the workload to be imposed on each server is substantially fixed at a constant ratio predefined in a network, and it is not possible to have complete control of the load distribution within the system.
To switch the operation mode to another mode in such a conventional load sharing system, it is necessary to change operating conditions for applications in the individual servers or to manipulate network resources that belong to each server. In the former method, each server will start and stop the applications or change the number of acceptable service requests, while in the latter method the network resources in each server must be activated or deactivated individually.
The users should make access to each server when trying to get a service from the system. In order to do so, the users must be knowledgeable about what address should be used to communicate with the servers and how the system is configured to provide services to them.
Moreover, the load sharing system may provide its services not only to the requesting user but also to a third party that is not requesting any services to the system. This will happen in system maintenance, for example, where some system functions must be temporarily stopped. In such a case, the system has to make an announcement to the users in need of the functions, so as to notify them when the system will terminate that service.
To accomplish such a forced message delivery to the user terminals in an active manner, the applications must learn in advance which terminals are connected to the system and which route of the network they should use to reach the server. For this reason, the conventional load sharing systems force the individual applications to manage information about the configuration of user terminals. This simply means that each application should be knowledgeable about which terminals are connected thereto and which communication controller is responsible for them, etc.
However, the above-described conventional load sharing systems have some problems in the distribution of workload among the servers.
First, the conventional load sharing system fails to centralize the load distribution control, and thus it is not adaptive enough to suit itself to the changing system state, resulting in low system utilization and insufficient reliability in operations. For example, when an unacceptable task concentration has happened to a specific server or an unscheduled job batch is issued to the system, the users may be frustrated by slow response from the system. Also, a problem in applications running on a server or failure of the server itself can cause rejection of user requests.
Although system administrators can adjust the load distribution by changing allocation of system resources for each server, they must investigate which server is overloaded and for which services the user requests are concentrating, each time they encounter the trouble, the administrators must then make a proper decision based on the understanding of that critical situation. Since the server load changes so frequently during the operation, it is hard for the system administrators to make a correct decision constantly for providing the load sharing system with an optimum load distribution.
Second, the users are responsible for setting up communications functions of their respective terminals by entering complicated parameters to make access to each server, thus causing a serious burden to the users.
In addition, the conventional load sharing system has another problem when an active application tries to initiate a service to the users. Since a number of user terminals are involved in a network, the extra tasks for managing terminal status information will overwhelm the execution of inherent services that the applications should provide to the users. Moreover, a plurality of applications on a server do similar tasks in parallel, thereby charging the server with an unnecessarily heavy burden.